/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cjos.util.sustituirCaracteres;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 *
 * @author Jos
 */
public class SustituirCaracteres {

    private String textoConSustitucion;
    private List<Exp> expreciones;

    public SustituirCaracteres() {
        this.textoConSustitucion = "";
        this.expreciones = new ArrayList<Exp>();
    }

    public String sustituir(String texto, Exp e, Lenguaje t) {
        getExpreciones().clear();
        this.colocaExprecion(e);
        return sustituir(texto, t);
    }

    public String sustituir(String texto, Exp[] e, Lenguaje t) {
        getExpreciones().clear();
        this.colocaExprecion(e);
        return sustituir(texto, t);
    }

    private String sustituir(String texto, Lenguaje t) {
        List<Exp> exp = getExpreciones();
        if (t instanceof Lenguaje) {
            if (t == Lenguaje.HTML) {
                if (exp.contains(Exp.ACENTOS_MAYUS)) {
                    texto = texto.replace("Á", "&Aacute;");
                    texto = texto.replace("É", "&Eacute;");
                    texto = texto.replace("Í", "&Iacute;");
                    texto = texto.replace("Ó", "&Oacute;");
                    texto = texto.replace("Ú", "&Uacute;");
                }
                if (exp.contains(Exp.ACENTOS_MINUS)) {
                    texto = texto.replace("á", "&aacute;");
                    texto = texto.replace("é", "&eacute;");
                    texto = texto.replace("í", "&iacute;");
                    texto = texto.replace("ó", "&oacute;");
                    texto = texto.replace("ú", "&uacute;");
                }
            }
            if (t == Lenguaje.JAVASCRIPT) {
                if (exp.contains(Exp.ACENTOS_MAYUS)) {
                    texto = texto.replace("Á", "\u00c1");
                }
                if (exp.contains(Exp.ACENTOS_MINUS)) {
                    texto = texto.replace("á", "\u00e1");
                }
            }
        }
        return texto;
    }

    private SustituirCaracteres colocaExprecion(Exp e) {
        getExpreciones().add(e);
        return this;
    }

    private SustituirCaracteres colocaExprecion(Exp[] e) {
        for (Exp i : e) {
            colocaExprecion(i);
        }
        return this;
    }

    public static void main(String agrs[]) {
        SustituirCaracteres s = new SustituirCaracteres();
        String texto;

        texto = "Á É Í Ó Ú     á é í ó ú";
        texto = s.sustituir(texto, Exp.ACENTOS, Lenguaje.HTML);
        System.out.println(texto);

        texto = "Á É Í Ó Ú     á é í ó ú";
        texto = s.sustituir(texto, Exp.ACENTOS_MINUS, Lenguaje.HTML);
        System.out.println(texto);

        texto = "Á É Í Ó Ú     á é í ó ú";
        texto = s.sustituir(texto, Exp.ACENTOS_MAYUS, Lenguaje.HTML);
        System.out.println(texto);
    }

    public String getTextoConSustitucion() {
        return textoConSustitucion;
    }

    public List<Exp> getExpreciones() {
        return expreciones;
    }
}
